// node 29_字符串去重.js


let s = 'asdaaabbb'

//方法1
//转数组-使用Set存储-转数组-转字符
function operateString1(params) {
    let arr = new Set(params.split(''))
    return [...arr].join('')
}
console.log(operateString1(s))

//方法2
//遍历添加字符
function operateString2(params) {
    let newS = ''
    for(let i=0;i<params.length;i++){
        if(newS.indexOf(params[i]) === -1){
            newS += params[i]
        }
    }
    return newS
}
console.log(operateString2(s))

//方法3
//使用object和数组配合存储
function operateString3(params) {
    let res = []
    let obj = {}
    for(let i=0;i<params.length;i++){
        if(!obj[params[i]]){
            res.push(params[i])
            obj[params[i]] = true
        }
    }
    return res.join('')
}
console.log(operateString3(s))

//方法4
//使用call()调用数组原型上的filter()迭代方法，之后在filter()内部使用indexOf进行判断去掉重复元素
function operateString4(params) {
    return Array.prototype.filter.call(params,(item,index,arr)=>{
        return arr.indexOf(item) == index
    }).join('')
}
console.log(operateString4(s))